/*  nu_member 테이블
 *  id - 회원의 아이디 (E-mail 주소를 받는다.)
 *  password - 회원 비밀번호
 *  orgfilename - 회원사진의 원본파일명
 *  savefilename - 서버에 저장된 회원사진의 실제 파일명
 *  기타 학습,금연,재테크 등 포인트 부분에 대한 컬럼 추가가 있을 예정
 */
create table nu_member(
	id varchar2(100) primary key,
	password varchar2(100) not null,
	orgfilename varchar2(200),
	savefilename varchar2(200)
)

/*  nu_board 테이블
 *  category - 글이 운동, 생활, 금연.. 등등 어디 타입인지
 *  confirmation - 글의 인증 유무를 확인
 *  id - nu_member 테이블의 id를 fk로 참조
 *  group_id - nu_group 테이블의 아이디를 참조. 이 글이 어떤 그룹에서 쓴 글인지 확인
 */
create table nu_board(
	no number primary key,
	title varchar2(200) not null,
	content varchar2(4000) not null,
	time_posted date,
	hits number default 0,
	orgfilename varchar2(200),
	savefilename varchar2(200),
	category varchar2(100) not null,
	confirmation number default 0,
	id varchar2(100) not null,
	group_id number not null,
	constraint fk_board_member_id foreign key(id) references nu_member(id),
	constraint fk_board_group_id foreign key(group_id) references nu_group(group_id)
)
/* nu_board 테이블의 no의 시퀀스 */
create sequence nu_board_no_seq nocache;
select sequence nu_board_no.nextval from dual;

insert into nu_board (no,title,content,time_posted,hits,category,id,group_id) 
values (nu_board_no_seq.nextval,'테스트 글쓰기','ㅋㅋㅋ',sysdate,0,'study','test',1);
insert into nu_board (no,title,content,time_posted,hits,category,id,group_id) 
values (nu_board_no_seq.nextval,'테스트 글쓰기','ㅋㅋㅋ',sysdate,0,'study','test',1);
insert into nu_board (no,title,content,time_posted,hits,category,id,group_id) 
values (nu_board_no_seq.nextval,'테스트 글쓰기','ㅋㅋㅋ',sysdate,0,'study','test',1);
insert into nu_board (no,title,content,time_posted,hits,category,id,group_id) 
values (nu_board_no_seq.nextval,'테스트 글쓰기','ㅋㅋㅋ',sysdate,0,'study','test',1);
insert into nu_board (no,title,content,time_posted,hits,category,id,group_id) 
values (nu_board_no_seq.nextval,'테스트 글쓰기','ㅋㅋㅋ',sysdate,0,'study','test',1);
insert into nu_board (no,title,content,time_posted,hits,category,id,group_id) 
values (nu_board_no_seq.nextval,'테스트 글쓰기','ㅋㅋㅋ',sysdate,0,'study','test',1);
insert into nu_board (no,title,content,time_posted,hits,category,id,group_id) 
values (nu_board_no_seq.nextval,'테스트 글쓰기','ㅋㅋㅋ',sysdate,0,'study','test',1);
insert into nu_board (no,title,content,time_posted,hits,category,id,group_id) 
values (nu_board_no_seq.nextval,'테스트 글쓰기','ㅋㅋㅋ',sysdate,0,'study','test',1);
insert into nu_board (no,title,content,time_posted,hits,category,id,group_id) 
values (nu_board_no_seq.nextval,'테스트 글쓰기','ㅋㅋㅋ',sysdate,0,'study','test',1);
insert into nu_board (no,title,content,time_posted,hits,category,id,group_id) 
values (nu_board_no_seq.nextval,'테스트 글쓰기','ㅋㅋㅋ',sysdate,0,'study','test',1);
insert into nu_board (no,title,content,time_posted,hits,category,id,group_id) 
values (nu_board_no_seq.nextval,'테스트 글쓰기','ㅋㅋㅋ',sysdate,0,'study','test',1);
insert into nu_board (no,title,content,time_posted,hits,category,id,group_id) 
values (nu_board_no_seq.nextval,'테스트 글쓰기','ㅋㅋㅋ',sysdate,0,'study','test',1);

select no, title, id, time_posted, hits from (
		select no, title, id, to_char(time_posted,'YYYY.MM.DD') as time_posted, hits, ceil(rownum/5) as page 
		from (
			select * from nu_board where group_id='1' order by no desc
		) 
) where page='1'

/*  nu_group 테이블
 *  group_id 그룹에 아이디를 부여
 *  group_type 그룹의 타입이 운동인지, 생활인지...
 *  group_name 사용자가 지은 그룹의 고유의 이름
 *  group_max 그룹 최대 사용자 기본적으로 10명으로 지정
 */
create table nu_group(
	group_id number primary key,
	group_type varchar2(100) not null,
	group_name varchar2(100) not null,
	group_max number default 10
)
/* nu_group 테이블의 id의 시퀀스 */
create sequence nu_group_id_seq nocache;

insert into nu_group (group_id,group_type,group_name,group_max) values (nu_group_id_seq.nextval,'study','토익공부방',15);
insert into nu_group (group_id,group_type,group_name,group_max) values (nu_group_id_seq.nextval,'study','삼성 SSAT 면접대비',5);
insert into nu_group (group_id,group_type,group_name,group_max) values (nu_group_id_seq.nextval,'study','한자 공부 합시다',10);
insert into nu_group (group_id,group_type,group_name,group_max) values (nu_group_id_seq.nextval,'study','기말고사대비 2주',10);
insert into nu_group (group_id,group_type,group_name,group_max) values (nu_group_id_seq.nextval,'study','미디어 휴먼2 스터디',5);

insert into nu_group (group_id,group_type,group_name,group_max) values (nu_group_id_seq.nextval,'sports','축구 모임',15);
insert into nu_group (group_id,group_type,group_name,group_max) values (nu_group_id_seq.nextval,'sports','주 1회 등산하기',15);
insert into nu_group (group_id,group_type,group_name,group_max) values (nu_group_id_seq.nextval,'sports','걷는게 최고!',5);
insert into nu_group (group_id,group_type,group_name,group_max) values (nu_group_id_seq.nextval,'sports','100m 달리기 10초',10);
insert into nu_group (group_id,group_type,group_name,group_max) values (nu_group_id_seq.nextval,'sports','숨쉬기 운동',30);

insert into nu_group (group_id,group_type,group_name,group_max) values (nu_group_id_seq.nextval,'finance','1년에 1억모으기',15);
insert into nu_group (group_id,group_type,group_name,group_max) values (nu_group_id_seq.nextval,'finance','내 집사기',10);
insert into nu_group (group_id,group_type,group_name,group_max) values (nu_group_id_seq.nextval,'finance','자동차 사기',10);
insert into nu_group (group_id,group_type,group_name,group_max) values (nu_group_id_seq.nextval,'finance','티끌모아 태산',15);
insert into nu_group (group_id,group_type,group_name,group_max) values (nu_group_id_seq.nextval,'finance','단기 200땡기자',20);

insert into nu_group (group_id,group_type,group_name,group_max) values (nu_group_id_seq.nextval,'smoking','평생 금연 방',10);
insert into nu_group (group_id,group_type,group_name,group_max) values (nu_group_id_seq.nextval,'smoking','자식을 위해 금연',5);
insert into nu_group (group_id,group_type,group_name,group_max) values (nu_group_id_seq.nextval,'smoking','금연으로 승진하자',15);
insert into nu_group (group_id,group_type,group_name,group_max) values (nu_group_id_seq.nextval,'smoking','한달에 한 갑 운동',5);
insert into nu_group (group_id,group_type,group_name,group_max) values (nu_group_id_seq.nextval,'smoking','절대 금연',5);

insert into nu_group (group_id,group_type,group_name,group_max) values (nu_group_id_seq.nextval,'living','아침 8시 기상',30);
insert into nu_group (group_id,group_type,group_name,group_max) values (nu_group_id_seq.nextval,'living','모닝콜 해주기',10);
insert into nu_group (group_id,group_type,group_name,group_max) values (nu_group_id_seq.nextval,'living','대중교통 탑시다',15);
insert into nu_group (group_id,group_type,group_name,group_max) values (nu_group_id_seq.nextval,'living','게임 중독 탈피',5);
insert into nu_group (group_id,group_type,group_name,group_max) values (nu_group_id_seq.nextval,'living','맛집 탐방',15);

select group_id,group_type,group_name,group_max from nu_group where group_type='study' order by group_id desc
/*  nu_reply 테이블
 *  re_no - 댓글의 순서
 *  id - nu_member 테이블의 id를 참조, 누가 쓴 댓글인지 확인
 *  no - nu_board 테이블의 no를 참조, 어떤 글에 달린 댓글인지 확인
 */
create table nu_reply (
	re_no number primary key,
	content varchar2(400) not null,
	time_posted date,
	id varchar2(100) constraint fk_nu_member_id references nu_member,
	no number constraint fk_nu_board_no references nu_board
)
/* nu_reply 테이블의 id의 시퀀스 */
create sequence nu_reply_no_seq nocache;
/* member, group 뽑아내려는 테이블*/
create table nu_member_group(
	nu_member_group number primary key,
	id varchar2(100) constraint fk_nu_member_group_id references nu_member,
	group_id number constraint fk_nu_group_id references nu_group
)
/* nu_member_group 테이블의 nu_member_group의 시퀀스 */
create sequence nu_member_group_seq nocache;

select * from nu_member_group;
/* 그룹 가입할때 써야할 query*/
insert into nu_member_group values(nu_member_group_seq.nextval,'test',86);
insert into nu_member_group values(nu_member_group_seq.nextval,'test',85);
insert into nu_member_group values(nu_member_group_seq.nextval,'test',84);
insert into nu_member_group values(nu_member_group_seq.nextval,'test@nate.com',48);
insert into nu_member_group values(nu_member_group_seq.nextval,'test@nate.com',81);
/* 가입하고 나면.. 아래쿼리문 쓴 후에 session의 List<GroupVO>에 저장해줘야됨*/
select * from nu_group
/*아이디로... 자기가 가입한 그룹들 정보 확인용*/
select * from  nu_member_group g, nu_group f where g.id = 'test' and g.group_id=f.group_id
/*Member login시에 담길 내용은.....login시 가져와야될게 2개로 늘었다.*/

alter table nu_group add(id varchar2(100))
update nu_group set id='test' 

insert into nu_member_group values(nu_member_group_seq.nextval,'test',1);
insert into nu_member_group values(nu_member_group_seq.nextval,'test',2);
insert into nu_member_group values(nu_member_group_seq.nextval,'test',3);
insert into nu_member_group values(nu_member_group_seq.nextval,'test',4);
insert into nu_member_group values(nu_member_group_seq.nextval,'test',5);

alter table nu_group add(group_current number);
update nu_group set group_current =1
update nu_group set group_current=group_current+1 where group_id=1

select * from nu_group

/*
 * 해당 board를 추천한 사람들의 list....
 * */
create table nu_confirmed(
	nu_confirmed_no number primary key,
	id varchar2(100) constraint fk_nu_member_confirmed_id references nu_member,
	no number constraint fk_nu_board_no_confirmed references nu_board
)
create sequence nu_confirmed_no_seq nocache;

select * from nu_group

insert into nu_confirmed values(-1,'1@nate.com',106)

select id from nu_confirmed where no=106

-- 애초에 boardVO를 긁어올때, 이 테이블에 있는 memberId리스트 들도 긁어와서
-- boardVO안의 ArrayList<String> confirmedIdList 에다가 집어넣고
-- jsp쪽에서 fn으로 contains 해서 있으면 아예 인증버튼이 안보이게 하고...

-- 인증을 누르면 board 테이블의 confirmation 1증가 후 nu_confirmed 테이블에 insert

-- 그룹 시작일, 종료일, content 컬럼 추가
-- 그룹 생성시 시작, 종료일 데이트피커로 찍게하자...
 
 create table nu_plan(
 	nu_plan_no number primary key,
 	nu_plan_title varchar2(100) not null,
 	nu_plan_content varchar2(4000) not null,
 	nu_plan_start_date date not null,
 	nu_plan_end_date date not null,
 	id varchar2(100) not null,
 	group_id number not null,
	group_type varchar2(100) not null
 )
create sequence nu_plan_no_seq nocache;

select nu_plan_no_seq.nextval from dual

select * from nu_plan where group_id=1
 -- plan 생성, 권한은 그룹장만 쓸 수 있도록... 그래서 공지글을 찍으면,
 -- 그룹에 가입한 회원들의 인증 유무를 보여준다거나...
 
 
